//
//  LoginApi.swift
//  SouWeiLaiSwift
//
//  Created by yxl on 2022/4/26.
//

import Foundation
import Moya


enum  LoginAPI {
    case login(pwd: String, mobile: String)
}

// MARK: - 补全【MoyaConfig 3：配置TargetType协议可以一次性处理的参数】中没有处理的参数
extension LoginAPI: TargetType {
    
    //0. 基础域名，整个项目只用一个，可以写在MoyaConfig中
    var baseURL: URL {
        switch self {
        case .login:
            return URL(string:kBaseURL)!
        }
    }
    
    //1. 每个接口的相对路径
    //请求时的绝对路径是   baseURL + path
    var path: String {
        return kBasePath
    }
    
    //2. 每个接口要使用的请求方式
    var method: Moya.Method {
        switch self {
            case .login:
            return .get
        }
    }
    
    //3. Task是一个枚举值，根据后台需要的数据，选择不同的http task。
    var task: Task {
        switch self {
        case .login(let pwd, let mobile):
            let pwdStr = SecurityUtil.encryptAESData(toBase64: pwd, app_key: AES_KEY)
            var parms : [String : Any]  = ["mobile":mobile,"pwd":pwdStr, "online":"1","service":kApiLoginphone]
            //所有接口的公共参数添加在这里：
            let header = [
                "plat":"ios",
                "version":kAppVersion,
                "systemVersion":"ios"+ksystemVersion,
                "model":kAppModelName,
                "width":kScreenWidth,
                "height":kScreenHeight,
                "hwRatio":kScreenHeight / kScreenHeight
            ]
            for (key,value) in header.reversed() {
                parms[key] = value
            }
            // 拼接签名
            let sign = NSString.encode(withParams: parms, apiName: kApiLoginphone);
            parms.updateValue(sign, forKey: "sign")
            return .requestParameters(parameters: parms, encoding: URLEncoding.default)
        default:
            //不需要传参数的接口走这里
            return .requestPlain
        }
        return .requestParameters(parameters: [:], encoding: URLEncoding.default)
    }
}
